
window.CSSHover=(function(){
    var m=/(^|\s)((([^a]([^ ]+)?)|(a([^#.][^ ]+)+)):(hover|active|focus))/i;var n=/(.*?)\:(hover|active|focus)/i;var o=/[^:]+:([a-z\-]+).*/i;var p=/(\.([a-z0-9_\-]+):[a-z]+)|(:[a-z]+)/gi;var q=/\.([a-z0-9_\-]*on(hover|active|focus))/i;var s=/msie (5|6|7)/i;var t=/backcompat/i;var u={
        index:0,
        list:['text-kashida','text-kashida-space','text-justify'],
        get:function(){
            return this.list[(this.index++)%this.list.length]
            }
        };var v=function(c){
        return c.replace(/-(.)/mg,function(a,b){
            return b.toUpperCase()
            })
        };var w={
        elements:[],
        callbacks:{},
        init:function(){
            if(!s.test(navigator.userAgent)&&!t.test(window.document.compatMode)){
                return
            }var a=window.document.styleSheets,l=a.length;for(var i=0;i<l;i++){
                this.parseStylesheet(a[i])
                }
            },
        parseStylesheet:function(a){
            if(a.imports){
                try{
                    var b=a.imports;var l=b.length;for(var i=0;i<l;i++){
                        this.parseStylesheet(a.imports[i])
                        }
                    }catch(securityException){}
                }try{
                var c=a.rules;var r=c.length;for(var j=0;j<r;j++){
                    this.parseCSSRule(c[j],a)
                    }
                }catch(someException){}
            },
        parseCSSRule:function(a,b){
            var c=a.selectorText;if(m.test(c)){
                var d=a.style.cssText;var e=n.exec(c)[1];var f=c.replace(o,'on$1');var g=c.replace(p,'.$2'+f);var h=q.exec(g)[1];var i=e+h;if(!this.callbacks[i]){
                    var j=u.get();var k=v(j);b.addRule(e,j+':expression(CSSHover(this, "'+f+'", "'+h+'", "'+k+'"))');this.callbacks[i]=true
                    }b.addRule(g,d)
                }
            },
        patch:function(a,b,c,d){
            try{
                var f=a.parentNode.currentStyle[d];a.style[d]=f
                }catch(e){
                a.runtimeStyle[d]=''
                }if(!a.csshover){
                a.csshover=[]
                }if(!a.csshover[c]){
                a.csshover[c]=true;var g=new CSSHoverElement(a,b,c);this.elements.push(g)
                }return b
            },
        unload:function(){
            try{
                var l=this.elements.length;for(var i=0;i<l;i++){
                    this.elements[i].unload()
                    }this.elements=[];this.callbacks={}
                }catch(e){}
            }
        };var x={
        onhover:{
            activator:'onmouseenter',
            deactivator:'onmouseleave'
        },
        onactive:{
            activator:'onmousedown',
            deactivator:'onmouseup'
        },
        onfocus:{
            activator:'onfocus',
            deactivator:'onblur'
        }
        };function CSSHoverElement(a,b,c){
        this.node=a;this.type=b;var d=new RegExp('(^|\\s)'+c+'(\\s|$)','g');this.activator=function(){
            a.className+=' '+c
            };this.deactivator=function(){
            a.className=a.className.replace(d,' ')
            };a.attachEvent(x[b].activator,this.activator);a.attachEvent(x[b].deactivator,this.deactivator)
        }CSSHoverElement.prototype={
        unload:function(){
            this.node.detachEvent(x[this.type].activator,this.activator);this.node.detachEvent(x[this.type].deactivator,this.deactivator);this.activator=null;this.deactivator=null;this.node=null;this.type=null
            }
        };window.attachEvent('onbeforeunload',function(){
        w.unload()
        });return function(a,b,c,d){
        if(a){
            return w.patch(a,b,c,d)
            }else{
            w.init()
            }
        }
    })();